package design;

/**
 * 设计模式-单例模式
 * 饿汉模式：类加载的时候，就进行创建对象，系统开销比较大，但不存在线程安全问题
 * 懒汉模式：在使用的时候才真正创建单例对象，但是存在线程安全问题
 * 静态内部类单例：兼具懒汉模式和饿汉模式的有点
 */

/**
 * 静态内部类
 */
public class Singleton4 {
    private static class InnerSingletion{
        private static Singleton4 singleton1 = new Singleton4();
    }


    private Singleton4() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static Singleton4 getInstance() {
        return InnerSingletion.singleton1;
    }

    @Override
    public String toString() {
        return "design.Singleton1{}" + this.hashCode();
    }
}
